package com.my.springboot.tuling.concurrent.thread;

import java.util.concurrent.locks.LockSupport;

/**
 * LockSupport是JDK中用来实现线程阻塞和唤醒的工具，线程调用park则等待“许可”，调用
 * unpark则为指定线程提供“许可”。使用它可以在任何场合使线程阻塞，可以指定任何线程进行
 * 唤醒，并且不用担心阻塞和唤醒操作的顺序，但要注意连续多次唤醒的效果和一次唤醒是一样的。
 *
 * 原理：
 */
public class LockSupportTest {
    public static void main(String[] args) {

        Thread parkThread = new Thread(new ParkThread());
        parkThread.start();
        System.out.println("唤醒parkThread");
        LockSupport.unpark(parkThread);
        System.out.println("唤醒parkThread====");
    }
}

class ParkThread implements Runnable{

    @Override
    public void run() {
        System.out.println("ParkThread 开始执行");
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        LockSupport.park();
        System.out.println("ParkThread 执行完毕");
    }
}